#ifndef QLSSETTINGS_H
#define QLSSETTINGS_H

#include <QString>

#include "qls_settings_global.h"

// 所有路径相对于当前工作路径 QDir::current()

// 配置文件 ./config/qlpmsp.ini
#define QLS_PATH_CONFIG       "./config/"
#define QLS_FILENAME_SETTINGS "qlpmsp.ini" // 配置文件名
#define QLS_FILEPATH_SETTINGS \
    QString("%1%2").arg(QLS_PATH_CONFIG, QLS_FILENAME_SETTINGS) // 配置文件路径

// 资源文件
#define QLS_PATH_RESOURCES "./resources/"        // 资源文件路径
#define QLS_PATH_THEMES    "./resources/themes/" // 主题包路径

// 语言包
#define QLS_PATH_LANGUAGE_PACKS "./translations/" // 语言包路径

// 缓存区
#define QLS_PATH_CACHE          "./cache/"
#define QLS_FILENAME_USER_CACHE "user_cache.ini" // 用户缓存文件名
#define QLS_FILEPATH_USER_CACHE \
    QString("%1%2").arg(QLS_PATH_CACHE, QLS_FILENAME_USER_CACHE) // 用户缓存路径

// 配置文件 group, key 值
#define QLS_KEY_THEME         "system/theme"         // 主题
#define QLS_KEY_LANGUAGE      "system/language"      // 语言
#define QLS_KEY_SOFTWARE_NAME "system/software_name" // 软件名

#define QLS_GROUP_DB              "database"      // 数据库
#define QLS_KEY_DB_TYPE           "type"          // 数据库类型
#define QLS_KEY_DB_MAX_WAIT_TIME  "max_wait_time" // 获取连接最大等待时间
#define QLS_KEY_DB_WAIT_INTERVAL  "wait_interval" // 尝试获取连接时等待间隔时间
#define QLS_KEY_DB_MAX_CONN_COUNT "max_connection_count" // 最大连接数

#define QLS_KEY_DB_HOST_NAME "host_name"     // 主机 ip
#define QLS_KEY_DB_PORT      "port"          // 端口号
#define QLS_KEY_DB_DB_NAME   "database_name" // 数据库名
#define QLS_KEY_DB_USERNAME  "username"      // 用户名
#define QLS_KEY_DB_PASSWD    "password"      // 密码

#define QLS_KEY_LOGIN_ENABLE "login/enable" // 登录功能使能

class QLS_SETTINGS_EXPORT QLsSettings
{
public:
    QLsSettings();

    static void setWorkSpace(const QString &ws);

    static QString getWorkSpace();

    static QString getInstallPath();
};

#endif // QLSSETTINGS_H
